﻿'
' Boogaloo® - http://www.mindfly.com
' Copyright (c) 2008
' by Mindfly, Inc.
'
' Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 
' documentation files (the "Software"), to deal in the Software without restriction, including without limitation 
' the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and 
' to permit persons to whom the Software is furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in all copies or substantial portions 
' of the Software.
'
' THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
' INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
' DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
' SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
' SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
' WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
' THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Imports System.Xml
Imports System.Web

Namespace Rss


    ''' <summary>
    ''' Rss Item Category
    ''' </summary>
    Public Class RssCategory
        Inherits RssBase

        Public Sub New(ByVal name As String)
            Me.name = name
        End Sub

        Public Sub New(ByVal name As String, ByVal domain As String)
            Me.name = name
            Me.domain = domain
        End Sub


        Public Function ToXmlString() As String           
            If Not String.IsNullOrEmpty(domain) Then
                Return String.Format("<category domain=""{0}"">{1}</category>", GetSafeXml(domain), GetSafeXml(name))
            Else
                Return String.Format("<category>{0}</category>", GetSafeXml(name))
            End If
        End Function

        ''' <summary>
        ''' returns list of category if rss item xml contains one or more category elements
        ''' </summary>
        Public Shared Function GetRssCategories(ByVal item As XmlNode) As List(Of RssCategory)
            Dim nl As XmlNodeList = item.SelectNodes("category")
            Dim n As XmlNode = Nothing
            Dim categories As New List(Of RssCategory)
            For Each n In nl
                With CType(n, XmlElement)
                    Dim d As String = String.Empty
                    If Not String.IsNullOrEmpty(.GetAttribute("domain")) Then d = .GetAttribute("domain")
                    categories.Add(New RssCategory(.InnerText, d))
                End With
            Next
            Return categories
        End Function

        ''' <summary>
        ''' Category name
        ''' </summary>
        Private _name As String
        Public Property name() As String
            Get
                Return _name
            End Get
            Set(ByVal value As String)
                _name = value
            End Set
        End Property

        ''' <summary>
        ''' Category domain
        ''' </summary>
        Private _domain As String
        Public Property domain() As String
            Get
                Return _domain
            End Get
            Set(ByVal value As String)
                _domain = value
            End Set
        End Property

    End Class


End Namespace
